[初級編]LLMへ至る道 ~そもそも機械学習ってなんなの?本企画の説明を添えて~[1日目]
みなさんこんにちは!クルトンです。
本日からアドベントカレンダー2023年の企画として、一人アドベントカレンダーをやっていきます。
初めてアドベントカレンダーという企画をやっていくのですが、頑張っていきます。
アドベントカレンダーの内容や対象読者については以下に記載します。
どういった内容のアドベントカレンダーなのか
LLMという単語をお聞きした事があるでしょうか。大規模言語モデルというもので英語だとLarge Language Modelです。以降ではLLMという略称を使っていきます。ChatGPTなどをニュースで見聞きする中で、もしかするとお聞きした人がいるかもしれませんね。
今回のアドベントカレンダーでは、LLMへ至るまでの内容で重要な内容をピックアップしながら書いていこうと考えています。 LLMの一つであるGPTについての説明はもちろんのこと、GPTを理解するためにも必要であるTransfromerの説明なども行ないます。また、Transformerなどの説明の中で必要である、そもそもの機械学習の基礎知識部分について本日からご説明いたします。
つまり、最終的に以下のようになっていただけるように執筆していく所存です。
- LLMに至るまでに使われてきた自然言語処理モデルについて理解し、ChatGPTを(中身も含めて)「理解できた!」と言える状態になる
- ChatGPTのような類似サービスが出た時に理解が素早くできるようになる
想定している読者
LLMという単語を聞いて、パッと何をやっているかが分かっている人や中身のモデルに関する論文を読んだ方は対象外です。(もちろん、読んだ上でフィードバックをいただけると大変助かります!)
想定している読者は以下です。
- 機械学習の初級者
- 「そもそも機械学習って何?」となっている人
- ChatGPTは知っているが、何がどう凄いのか”裏で動いている仕組み”から「ここが凄いところだ!」の部分が分からない人
- 「ChatGPTって何?」を、裏側の仕組みも軽く含めながら説明が難しい人
- 「GPTってなんだ?」ってなってる人
- イメージを掴みたい方
以上が想定している読者です。
ここまでは本アドベントカレンダーに関する内容をご説明しました。
ここから実際に機械学習とはそもそも何をしていくのかについて、簡単な概要を説明していきます。
機械学習とは?
機械学習とはなんであるか、AWSの下記のページが参考になります。
上記ページの機械学習とは
という部分に書かれている文章を引用したのが下記の文章です。
機械学習は、コンピュータシステムが明示的な指示なしにタスクを実行するために使用するアルゴリズムと統計モデルを開発する科学であり、代わりにパターンと推論を利用します。
コンピュータシステムは、機械学習アルゴリズムを使用して、大量の履歴データを処理し、データパターンを識別します。 これにより、特定の入力データセットから結果をより正確に予測できます。
例えば、データサイエンティストは、何百万ものスキャン画像とそれに対応する診断情報を保存することにより、X 線画像から癌を診断するための医療アプリケーションをトレーニングできます。
上記内容をイメージで理解してみます。
まずは大量のデータを処理する部分です。これは機械学習の分野では学習と呼ばれる部分です。
次に大量のデータを学習した結果から予測する部分です。機械学習の分野では推論と呼ばれるものです。
いかがでしたでしょうか。簡単に学習と推論と呼ばれる機械学習の部分をイメージでお伝えしました。
では次に、機械学習がなぜ必要なのかを考えてみましょう!
機械学習があると何が嬉しいの?
以下のような問題があるとします。
あなたは小売店で店長として働いています。現在は夏真っ盛りで、アイスの売れ行きが好調です。 過去の帳簿から売れている個数を確認したところ、どうやら売れ行きには、気温と天気が関係していそうです。 天気予報で来週一週間の気温と天気の予報が発表された時に、毎回仕入れのタイミングで、自分で考えるのが面倒なため自分の代わりにコンピュータに適切な仕入数を予想してほしいです。 どうすれば良いでしょうか?
ここで機械学習を使わないプログラミングの場合ですと、一例ですが「気温が何度から何度の時、晴れ、曇り、雨のときのそれぞれの天気に合わせて固定の値を返す」という事は可能です。 しかし「とあるCMが流行して売り上げがかなり伸びている」や「年齢の違いによって売り上げている個数が違うので考慮したい」など、条件がさらに出てくるとドンドンとプログラミングが難しくなってきます。(プログラムを書いてメンテナンスをし続けるのも大変です。)
もちろんデータという形で存在している事が前提ですが、機械学習を使えばそれらの状況(データ)を学習して「これだけ仕入れたら良いんじゃないか」と予測(推論結果)を教えてくれます。ちなみにこの需要の予測にご興味ある方は「チャンスロス 機械学習」と検索するとご興味持たれる情報が出てくるやもしれないです。
機械学習は上記のように、データがある場合にさまざまな状況に合わせて出力をしてくれるものです。他の例として、以下のようなものにも適用できます。
- 医療用のスキャンしたデータから、病気であるか判定する
- 日本語のとある文章が、ポジティブな表現かネガティブな表現か判定する
- 複数のデータを、データの特徴から分類すること
- 人が書いた文字が何であるかをコンピュータが判断する
- 画像から3Dモデルを生成する
上記はほんの一例ですが、機械学習を使うために必要な大量のデータの部分をクリアし、学習さえできれば強力な味方になること間違いなしです。
ただし、学習のためのデータ集めや学習自体は大変な労力がかかります。試しにお手元のPCやスマホで「機械学習用GPU 値段」など、価格について検索していただくと何万円とする事が分かります。近年の機械学習で取り扱うデータ量や種類、学習に使われるパラメータという、機械学習モデルの設定値数が増えている事を鑑みるに、何万円どころか何百万円、動かすために必要な他の要素も加味すると場合によって何千万円以上という費用も考慮に入れる必要があるかと思います。個人がパッと手を出せる値段ではございません(少なくとも自分はそうです)。
ここで朗報です。機械学習では誰かが学習したモデルを使って推論をする事が可能です。
学習済みモデルについて
学習には大変な料金や手間がかかるため、あらかじめ誰かが学習したモデル、 学習済みモデル と呼ばれるものを使う場合があります。これを使えば、軽量なモデルであれば個人が持つノートパソコンであっても動作が可能になります。
学習済みモデルを公開している以下のようなサイトがあります。
上記サイトで公開されている学習済みモデルを、自分の持っている少量のデータを使って改めて機械学習モデルを学習させ、自分用のモデルを作るという事が可能です。 これをファインチューニングと呼びます。
終わりに
本日は「機械学習ってそもそもなんだ?どういう事をしているんだ?」という部分をイメージを使いながらお伝えしました。 徐々に本格的になっていき、最終的にはLLMと呼ばれている機械学習モデルについて「中身はどういう事をしているんだ?」という部分にまで踏み込んでいきます!
また明日からは、機械学習の基本的な部分である損失関数や活性化関数、評価指標についてお話ししていく予定です。
本日はここまでです。明日もよければご覧ください!